package cn.iocoder.yudao.module.system.controller.admin.passengerinfo.vo;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
import java.time.LocalDateTime;

/**
 * 乘客信息 Base VO，提供给添加、修改、详细的子 VO 使用
 * 如果子 VO 存在差异的字段，请不要添加到这里，影响 Swagger 文档生成
 */
@Data
public class PassengerInfoBaseVO {

    @Schema(description = "用户ID - 关联system_users表", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
    @NotNull(message = "用户ID不能为空")
    private Long userId;

    @Schema(description = "用户名", example = "zhang_san")
    private String username;

    @Schema(description = "昵称", example = "张三")
    private String nickname;

    @Schema(description = "邮箱", example = "zhangsan@example.com")
    private String email;

    @Schema(description = "手机号", example = "13888888888")
    private String mobile;

    @Schema(description = "身份证号", example = "320123199001011234")
    private String idCard;

    @Schema(description = "真实姓名 - 实名认证后的姓名", example = "张三")
    private String realName;

    @Schema(description = "认证失败原因", example = "身份证信息不匹配")
    private String verifyFailReason;

    @Schema(description = "最近下单时间")
    private LocalDateTime lastOrderTime;

    @Schema(description = "可开发票金额", example = "100.00")
    private BigDecimal invoiceableAmount;

    @Schema(description = "行程未开票金额", example = "50.00")
    private BigDecimal unInvoicedAmount;

    @Schema(description = "用户级别", example = "VIP")
    private String userLevel;

    @Schema(description = "成长值", example = "1000")
    private Integer growthValue;

    @Schema(description = "总出行公里数", example = "1500.50")
    private BigDecimal totalKilometers;

    @Schema(description = "本月出行里程", example = "200.30")
    private BigDecimal monthlyKilometers;

    @Schema(description = "总充值金额", example = "2000.00")
    private BigDecimal totalRechargeAmount;

    @Schema(description = "退款金额", example = "100.00")
    private BigDecimal refundAmount;

    @Schema(description = "总订单支付金额", example = "1800.00")
    private BigDecimal totalPayAmount;

    @Schema(description = "本月订单支付金额", example = "300.00")
    private BigDecimal monthlyPayAmount;

}
